
#pragma once

#include <stdint.h>


namespace modpash {

    constexpr uint8_t half_byte_to_hex(uint8_t d) {
        return (d < 10) ? (d + '0') : (d + 'A' - 10);
    };

    constexpr uint8_t hex_to_half_byte(uint8_t d) {
        if (d < ':') {
            return d - '0';
        }
        else if (d > '@') {
            return d - 'A' + 10;
        }
        else {
            return 0xee;  // 随便返回一个大于0x0f 的无效数值
        }
    }

    constexpr uint8_t hex_to_byte(uint8_t h, uint8_t l) {
        return (hex_to_half_byte(h) << 4) + hex_to_half_byte(l);
    }

}  // namespace modpash
